package ar.edu.untref.edd2.aventura.controladores;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
/*
 * Menu principal donde se eligen opciones
 */
public class Menu {

	private int opcion;

	/**
	 * @param accesoDirecto : es el cual se usa para acceder directamente a una opcion
	 * @throws OpcionInexistenteException
	 * @throws IOException
	 * @throws ClassNotFoundException
	 * post: obtiene una opcion y la procesa
	 */
	public Menu(boolean accesoDirecto) throws OpcionInexistenteException,
			IOException, ClassNotFoundException {
		System.out
				.println("***********************\nBienvenido al Adventure 1.0\n***********************");
		
		this.getOpciones();
		if (!accesoDirecto) {
			this.getSeleccion();
			this.procesarOpcion(this.opcion);
		}

	}

	/**
	 * @return obtiene una opcion del teclado
	 */
	@SuppressWarnings("resource")
	private int getSeleccion() {
		Scanner scanner = new Scanner(System.in);
		this.opcion = scanner.nextInt();
		scanner.nextLine();
		return this.opcion;
	}

	/**
	 * post: imprime en consola opciones a elegir
	 */
	private void getOpciones() {
		System.out.println("_Seleccione una de las opcinoes_");
		System.out.println("1. Continuar Juego\n");
		System.out.println("2. Nuevo Juego\n");
		System.out.println("3. Salir\n");
	}

	/**
	 * @param seleccion procesa seleccion introducida por teclado
	 * @throws OpcionInexistenteException
	 * @throws IOException
	 * @throws ClassNotFoundException
	 * post: procesa opcion e inicia / continua partida
	 */
	public void procesarOpcion(int seleccion)
			throws OpcionInexistenteException, IOException, ClassNotFoundException {
		switch (seleccion) {
		case 1:
			System.out.println("Ingrese su Usuario: ");
			BufferedReader lee = new BufferedReader(new InputStreamReader(
					System.in));
			String usuario = lee.readLine();
			usuario += ".sav";
			File archivoGuardado = new File("c:/" + usuario);

			if (!archivoGuardado.exists()) {
				System.out
						.println("El archivo no existe... Comienza un nuevo juego...");
				Historia NuevaHistoria = new Historia();
				NuevaHistoria.comenzar(usuario);
			} else {
				System.out.println("Bienvenido: "+(usuario));
				Historia continuarHistoria = new Historia();
				continuarHistoria.continuar(usuario);
			}

			break;
		case 2:
			Historia NuevaHistoria = new Historia();
			System.out.println("Tu nombre? ");
			BufferedReader leeNuevoUsuario = new BufferedReader(new InputStreamReader(
					System.in));
			String nuevoUsuario = leeNuevoUsuario.readLine();
			System.out.println("Bienvenido: "+nuevoUsuario);
			NuevaHistoria.comenzar(nuevoUsuario);
			break;
		case 3:
			System.out.println(":: Terminando Aplicacion ::");
			System.exit(0);
			break;
		default:
			throw new OpcionInexistenteException("Opcion Inexistente!!");
		}
	}
}
